package com.qcby.finance.base.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qcby.finance.base.entity.dto.SkuDTO;
import com.qcby.finance.base.entity.dto.SpuDTO;
import com.qcby.finance.base.entity.po.SpuPo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qcby.framework.common.pojo.PageParam;
import com.qcby.framework.common.pojo.PageResult;
import com.qcby.framework.common.pojo.Result;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 劝书
 * @since 2023-02-19
 */
public interface SpuService extends IService<SpuPo> {
    /**
     * 查询spu列表时使用
     *
     * @return {@link IPage}<{@link SpuDTO}>
     */
    Result<PageResult<SpuDTO>> showSpu(SpuDTO spuDTO, PageParam pageParam);

    /**
     * 根据spu编号，分组查询sku
     *
     * @return {@link IPage}<{@link SpuDTO}>
     */
    Result<PageResult<SpuDTO>> showGroupSpu(SpuDTO spuDTO, PageParam pageParam);

    /**
     * 根据id查询sku
     * @param id
     * @return
     */
    SpuDTO getSpuById(Long id);

    /**
     * 添加sku
     *
     * @param spuDTO sku dto
     * @return int
     */
    int addSpu(SpuDTO spuDTO);

    /**
     * 编辑sku
     *
     * @param spuDTO sku ato
     * @return {@link SpuDTO}
     */
    int editSpu(SpuDTO spuDTO);

    Boolean deleteSpu(Long id);
    /**
     * 是否上架
     *
     * @param spuDTO spu dto
     * @return int
     */
    Boolean isOnSale(SpuDTO spuDTO);

    /**
     * 添加spu库存数量
     *
     * @param spuNo spu编号
     * @param count 数量
     * @return {@link Boolean}
     */
    Boolean addCount(String spuNo,Integer count);

    /**
     * 减少spu库存数量
     *
     * @param spuNo spu编号
     * @param count 数量
     * @return {@link Boolean}
     */
    Boolean reduceCount(String spuNo,Integer count);

    List<SpuDTO> selectList(List<SpuDTO> list);

}
